#ifndef REGISTROHASH_H_
#define REGISTROHASH_H_

#include "../common/IImprimible.h"
#include <limits>
#include <string>


class RegistroHash : public IImprimible {
protected:
	unsigned long int _clavePrimaria;
	std::string _autor;
	std::string _frase;

	void ImprimirEn(std::ostream& out) const;

public:
	RegistroHash();
	RegistroHash(unsigned long int clave, std::string autor, std::string frase);
	RegistroHash(const RegistroHash& reg);

	virtual ~RegistroHash(){ }

	unsigned long int getClave() const;
	void setClave(unsigned long int c);

	std::string getAutor() const;
	void setAutor(std::string autor);

	std::string getFrase() const;
	void setFrase(std::string frase);

	int getSize() const;

	// Usados para la serializacion de los datos
	int serializar(char* arrBytes);
	int desSerializar(char* arrBytes);

	// Un valor maximo imposible de alcanzar para usar como
	// valor en el maximo registro de cada nodo
	static unsigned long int GET_MAXIMO_IMPOSIBLE() {
		return std::numeric_limits<unsigned long int>::max();
	}
};

#endif /* REGISTROHASH_H_ */
